package generic;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @program JavaBase
 * @description:
 * @author: zhanglu
 * @create: 2019-06-06 12:20:00
 *
 * 泛型：
 * 1、集合中使用泛型 没有使用/使用
 * 2、自定义泛型类、泛型方法
 * 3、泛型与继承关系
 * 4、通配符<?>
 */
public class TestGeneric01 {

    /**
     * 自定义泛型类
     */
    @Test
    public void test01(){
        Customer c = new Customer<Integer>();
        c.setT(123123);
        System.out.println(c.getT());

        c = new Customer<String>();
        c.setT("zhangsan");
        System.out.println(c.getT());
    }

    /**
     * 泛型方法
     */
    @Test
    public void test02(){
        Customer c = new Customer();
        Integer[] i = new Integer[]{1,2,3,4,5,6,7};
        List<Integer> coll = new ArrayList<>();
        c.copyToCollection(i,coll);
        System.out.println(coll);
    }

    /**
     * 泛型与继承关系
     */
    @Test
    public void test03(){
        Object obj = new String();
        Date d = new Date();
        obj = d;

        List<Object> l1 = null;
        List<String> l2= null;
        List<?> l3 = null;
        l3 = l1;
        l3 = l2;
    }

}
